package com.framework.service;

import com.baomidou.mybatisplus.service.IService;
import com.framework.entity.sys.SysAgent;
import com.framework.entity.tran.TranBenefitDay;
import com.framework.entity.tran.TranTerBenefitInfo;
import com.framework.entity.tran.TranTransactionInfo;
import com.framework.page.PageUtils;
import com.framework.view.DividedSumDto;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 功能描述: 基础分润接口
 * @author ck
 * @date 2018/8/28 19:46
 */
public interface BenefitDayService extends IService<TranBenefitDay> {

	/**
	 * 根据月查询交易
	 * @param lastMonth  上个月
	 * @param lastTwoMonth 上个月-年月
	 * @param agentId 代理商ids
	 * @param types  交易类型
	 * @return
	 */
	DividedSumDto queryTransMonthSum(String lastMonth, String lastTwoMonth, Long agentId,String types);

	/**
	 * 本月自营、团队交易分润
	 * @param agentId 代理商id
	 * @param types 类型 1：自营 2：团队
	 * @return 金额
	 */
	BigDecimal getThisMonthAmount(Long agentId,Integer types);

	/**
	 * 获取一天自营、团队交易分润
	 * @param agentId
	 * @param types
	 * @param datTime 时间
	 * @return
	 */
	BigDecimal getDayAmount(Long agentId,Integer types,String datTime);
	/**
	 * 获取一个月自营、团队交易分润
	 * @param agentId
	 * @param types
	 * @param monthTime 时间
	 * @return
	 */
	BigDecimal getMonthAmount(Long agentId,Integer types,String monthTime);

	/**
	 * 查询个人的分润信息
	 * @param params
	 * @return
	 */
    PageUtils queryListByAgentId(Map<String,Object> params);
	/**
	 * 添加个人每日分润信息
	 * @param tranTransactionInfo
	 * @param benefitAmount
	 * @param agent
	 */
	void addSelfBenefitDay(TranTransactionInfo tranTransactionInfo, BigDecimal benefitAmount, SysAgent agent);
	/**
	 * 更迭个人团队交易信息
	 * @param sysAgent
	 * @param tranTerBenefitInfo
	 * @param teambenefit
	 * @param benefitDate
	 */
	void updateTeamTranDay(SysAgent sysAgent, TranTerBenefitInfo tranTerBenefitInfo, BigDecimal teambenefit, Date benefitDate);

	/**
	 * 更新团队分润
	 * @param sysAgent
	 * @param tranTerBenefitInfo
	 * @param benefitAmount
	 * @param benefitDate
	 */
	void updateTeamBenefitDay(SysAgent sysAgent, TranTerBenefitInfo tranTerBenefitInfo, BigDecimal benefitAmount, Date benefitDate);
	/**
	 * 查询今天的分润汇总
	 * @return
	 * @param benefitDateStr
	 */
	List<TranBenefitDay> queryToAddFlowAccount(String benefitDateStr);

	/**
	 * 回退列表
	 * @param deptId
	 * @param date
	 * @return
	 */
	List<TranBenefitDay> queryReback(Long deptId, Date date);

	/**
	 * 添加团队信息
	 * @param info
	 * @param pAgent
	 * @param pidBenefit
	 */
	void addTeamBenefit(TranTransactionInfo info, SysAgent pAgent, BigDecimal pidBenefit);

	/**
	 * 下载
	 * @param deptId
	 * @param response
	 */
	void downLoad(Long deptId, HttpServletResponse response);

	/**
	 * 分润推送列表
	 * @param benefitDateStr
	 * @param deptId
	 * @return
	 */
	List<TranBenefitDay> queryPushFlowAccount(String benefitDateStr, Long deptId);

	/**
	 * 分润总计
	 * @param q
	 * @return
	 */
    Map<String, Object> countTotal(Map<String, Object> q);

    Map<String, Object> queryAgentIdSum(Long agentId, String s);
}

